]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
altTab: Improve cycling to a window on another workspace
authorFlorian Müllner <fmuellner@gnome.org>
Wed, 14 Sep 2016 20:44:12 +0000 (22:44 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Sun, 18 Sep 2016 09:00:54 +0000 (11:00 +0200)
Both 'cycle-group' and 'cycle-window' shortcuts allow cycling through
windows on all workspaces. While this works, it looks quite broken
since we started showing clones for highlighting: the selected window
vanishes (when its clone is destroyed), then slides back in with its
workspace. Instead, slide the selected window to its workspace like
we do for the 'move-to-workspace-*' shortcuts.

https://bugzilla.gnome.org/show_bug.cgi?id=771536

js/ui/altTab.js

index c2217075bc3eb7153ef45c09857a6c880ef5d875..27aa2d7bfdb3feed964c8b9feaa6db2281d91377 100644 (file)
@@ -444,7 +444,21 @@ const CyclerPopup = new Lang.Class({
     },
 
     _finish: function() {
-        Main.activateWindow(this._items[this._selectedIndex]);
+        let window = this._items[this._selectedIndex];
+        let ws = window.get_workspace();
+        let activeWs = global.screen.get_active_workspace();
+
+        if (activeWs == ws) {
+            Main.activateWindow(window);
+        } else {
+            // If the selected window is on a different workspace, we don't
+            // want it to disappear, then slide in with the workspace; instead,
+            // always activate it on the active workspace ...
+            activeWs.activate_with_focus(window, global.get_current_time());
+
+            // ... then slide it over to the original workspace if necessary
+            Main.wm.actionMoveWindow(window, ws);
+        }
 
         this.parent();
     },